[빅데이터를 지탱하는 기술] 빅데이터 입문기 #4
3-1 대규모 분산 처리의 프레임워크
구조화 데이터 vs 비 구조화 데이터
구조화 데이터
- SQL로 데이터 집계할 때 명확히 정해진 스키마가 있음
비구조화 데이터
- 이미지, 동영상 등 정해진 게 없는 데이터
- 스키마리스 데이터
- 기본 서식은 있지만 스키마 정의가 안됨
- ex) CSV, JSON, XML 등
데이터 구조화의 파이프라인

- 열 지향 스토리지에서는 팩트 테이블과 디멘전 테이블로 나뉜다.
- 팩트 테이블: 시간에 따라 증가하는 데이터
- 디멘전 테이블: 그에 따른 부속 데이터
비구조화 데이터를 열 지향 스토리지로 변환하는 과정
- 데이터의 가공 및 압축을 위해 많은 컴퓨터 리소스를 사용
- 분산 처리 프레임워크 중 Hadoop과 Spark가 있다.
Hadoop
- 분산 데이터 처리의 공통 플랫폼
- 단일 소프트웨어가 아닌 분산 시스템을 구성하는 다수의 소프트웨어 집합체
- 분산 파일 시스템
- 리소스 관리자
- 분산 데이터 처리

- 분산 파일 시스템: 분산 처리 시스템에 필요한 데이터를 저장
- 리소스 관리자: CPU 코어와 메모리를 관리하고 적절히 조율
- 컨테이너: 어떤 호스트에서 어떤 프로세스를 실행시킬 것인지 결정하는 애플리케이션 수준의 기술
분산 데이터 처리는 다음과 같은 선택지가 있음:
- MapReduce
- Hive
MapReduce
- 비구조화 데이터 가공에 적합
- 대량의 데이터를 배치 처리하기 위한 용도

Hive
- SQL 등의 쿼리 언어로 집계할 때 유용
- MapReduce의 단점을 극복: 이전 단계 완료를 기다리지 않고 다음 단계를 바로 실행

대화형 쿼리 엔진 – Impala & Presto
- 쿼리 실행을 빠르게 하기 위한 쿼리 엔진
Spark – 인메모리 형의 고속 데이터 처리
- 효율적인 데이터 처리를 위한 프로젝트
- Hadoop과 독립된 프로젝트
특징:
- 대량의 메모리를 활용하여 고속화
- 디스크에 기록하지 않음
- Java 런타임 필요
- 데이터 처리는 스크립트 언어 사용 가능
단점:
- 중간에 비정상적으로 종료되면 데이터가 손실됨 (다시 실행 필요)

쿼리 엔진
// TODO: 추가 정리 예정